pub fn dp_rec_mc(amount: u32) -> u32 {
    let coins = [1, 2, 5, 10, 20, 30, 50, 100];
    let mut dp = vec![u32::MAX; (amount + 1) as usize];
    dp[0] = 0;
    for coin in coins.into_iter() {
        for x in coin..=amount{
           if dp[(x - coin) as usize] + 1 != u32::MAX && dp[(x - coin) as usize] + 1 < dp[x as usize] {
               dp[x as usize] = dp[(x - coin) as usize] + 1;
           }
        }
    }
    if dp[amount as usize] == u32::MAX {
        0
    } else {
        dp[amount as usize]
    }
}
